In a typical cloud environment, virtual switches facilitate communications between virtual machines. The virtual switches may be configured based on network policies, and configurations of the switches may be fine-tuned to optimize the network throughput.
Fine-tuning configurations of the switches is often difficult as the switches may have different characteristics, different capacities, and different types of ports. Thus, if a cloud cluster includes hundreds of different switches and hundreds of different ports, fine-tuning the switches in the cluster to optimize the network throughput may be quite difficult.
The difficulty in fine-tuning the switches is often amplified by the fact that virtual environments are inherently dynamic. For example, the virtual environment may be dynamically reconfigured as some virtual machines are evacuated from virtual spaces, some virtual storage disks are moved from one virtual location to another, some files are transferred from one location to another, or some data is transferred from one virtual machine to another. Since the reconfigurations are dynamic and unpredictable, the fine-tuning of the switches in the cluster needs to be as dynamic as possible.